definition module Scanner;
import StdEnv;

tokenize :: .Int !(u:{#.Char},![.Char]) {#.Char} 
      -> (v:{#Char},{#Char},Int), [u <= v];
tokens :: ![({#.Char},![.Char])] !{#.Char} 
                  -> (.Bool,[.({#Char},{#Char})]);

//words :: ![[Char]] !{#Char} -> (Bool,[{#Char}]);
words :: [Char] String -> [String];

isToken :: [Char] String -> Bool;

concat :: String [String] -> String;

//wordsFromFile :: [[.Char]] {#.Char} *a 
 //       -> *([{#Char}],*a) | FileSystem a;

//wordsToFile :: [{#.Char}] {#.Char} *a -> *a | FileSystem a;

freadlines :: {#Char} *File -> ({#Char},.File);

//fromIO :: [[.Char]] *File -> ([{#Char}],.File);

pad n c s :== {c \\ i <- [0..n - size s]};